package
{
	import com.nbooo.ui.GameListScreen;
	import com.somewater.controller.MenuManager;
	import com.somewater.controller.PopUpManager;
	import com.somewater.controller.RpcHandler;
	import com.somewater.display.Window;
	import com.somewater.game.GameModule;
	import com.somewater.game.controllers.SocketHandler;
	import com.somewater.storage.GameUserDef;
	import com.somewater.text.Hint;
	
	import flash.display.Sprite;
	
	public class Balance extends Sprite
	{
		
		public static var instance:Balance;
		
		/**
		 * С ним работает только PushButton !!!
		 * Самый нижний слой
		 */
		public var gameLayer:Sprite;
		
		
		public var uiLayer:Sprite;
		
		public var popupLayer:Sprite;
		
		private var popupGroundLayer:Sprite;
		
		public var hintLayer:Sprite;
		
		public var flashVars:Object;
		
		
		/**
		 * Полученный через flashVars (или другим способом) id сессии
		 */
		public function get session_id():String
		{
			return null;
		}
		
		
		
		public function Balance()
		{
			super();
			
			if(instance)
				throw new Error("No more Balance!!!");
			
			instance = this;
			
			gameLayer = new Sprite();
			addChild(gameLayer);
			
			uiLayer = new Sprite();
			addChild(uiLayer);			
			
			popupLayer = new Sprite(); 
			addChild(popupLayer);
			
			popupGroundLayer = new Sprite();
			//popupLayer.addChild(popupGroundLayer);
			
			hintLayer = new Sprite();
			addChild(hintLayer);
		}
		
		
		
		public function run(fv:Object):void
		{
			flashVars = fv;
			
			popupGroundLayer.graphics.beginFill(0, 0.4);
			popupGroundLayer.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
			
			PopUpManager.Initialize(popupLayer, uiLayer, stage.stageWidth, stage.stageHeight, popupGroundLayer);
			
			Hint.init(hintLayer);
			
			MenuManager.initialize(uiLayer);
			
			
			// тут надо послать запрос к серверу и получить иныу по юзеру
			RpcHandler.Initialize(fv.secret, fv.session_id, fv.network_user_id, fv.social);
			RpcHandler.instance.init(onServerResponse, onServerError, fv.sex, fv.first_name);
		}
		
		
		
		
		private function onServerResponse(response:Object = null):void
		{
			// сокеты только после отработки rpc!!!
			SocketHandler.Initialize();
			
			// сервер ответил и мы уже знаем исчерпывающую инфу насчет юзера
			//MenuManager.instance.showGame();
			MenuManager.instance.showMenu(new GameListScreen());
		}
		
		
		
		private function onServerError(error:Object):void
		{
			PopUpManager.message("Init error");
		}
	}
}